package com.ruoyi.pos.domain.dto.transaction.request;

import com.ruoyi.pos.domain.dto.common.request.BasePageRequest;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 销售小票查询请求DTO
 * 
 * @author ruoyi
 * @date 2025-01-30
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "销售小票查询请求")
public class SaleTicketQueryRequest extends BasePageRequest {

    @ApiModelProperty(value = "销售流水号")
    private String transactionNo;

    @ApiModelProperty(value = "本地销售号")
    private String localTransactionNo;

    @ApiModelProperty(value = "设备ID")
    private Long deviceId;

    @ApiModelProperty(value = "设备名称")
    private String deviceName;

    @ApiModelProperty(value = "柜组ID")
    private Long groupId;

    @ApiModelProperty(value = "柜组名称")
    private String groupName;

    @ApiModelProperty(value = "柜组编码")
    private String groupCode;

    @ApiModelProperty(value = "收银员ID")
    private Long cashierId;

    @ApiModelProperty(value = "收银员姓名")
    private String cashierName;

    @ApiModelProperty(value = "会员ID")
    private Long memberId;

    @ApiModelProperty(value = "会员姓名")
    private String memberName;

    @ApiModelProperty(value = "单据类型", allowableValues = "SALE,REFUND")
    private String documentType;

    @ApiModelProperty(value = "交易状态", allowableValues = "PENDING,COMPLETED,CANCELLED")
    private String transactionStatus;

    @ApiModelProperty(value = "开始时间")
    private Date startTime;

    @ApiModelProperty(value = "结束时间")
    private Date endTime;

    @ApiModelProperty(value = "最小金额")
    private BigDecimal minAmount;

    @ApiModelProperty(value = "最大金额")
    private BigDecimal maxAmount;

    @ApiModelProperty(value = "商品编码")
    private String goodsCode;

    @ApiModelProperty(value = "商品名称")
    private String goodsName;

    @ApiModelProperty(value = "支付方式编码")
    private String paymentTypeCode;
}